<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>DrmSessionEventListener (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="DrmSessionEventListener (ExoPlayer library)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":18,"i1":18,"i2":18,"i3":50,"i4":18,"i5":18,"i6":18};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.drm</a></div>
<h2 title="Interface DrmSessionEventListener" class="title">Interface DrmSessionEventListener</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../analytics/AnalyticsCollector.html" title="class in com.google.android.exoplayer2.analytics">AnalyticsCollector</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">DrmSessionEventListener</span></pre>
<div class="block">Listener of <a href="DrmSessionManager.html" title="interface in com.google.android.exoplayer2.drm"><code>DrmSessionManager</code></a> events.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a></span></code></th>
<td class="colLast">
<div class="block">Dispatches events to <a href="DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm"><code>DrmSessionEventListeners</code></a>.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysLoaded</a></span>&#8203;(int&nbsp;windowIndex,
               <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
<td class="colLast">
<div class="block">Called each time keys are loaded.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRemoved</a></span>&#8203;(int&nbsp;windowIndex,
                <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
<td class="colLast">
<div class="block">Called each time offline keys are removed.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRestored</a></span>&#8203;(int&nbsp;windowIndex,
                 <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
<td class="colLast">
<div class="block">Called each time offline keys are restored.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionAcquired</a></span>&#8203;(int&nbsp;windowIndex,
                    <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Implement <a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)"><code>onDrmSessionAcquired(int, MediaPeriodId, int)</code></a> instead.</div>
</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">onDrmSessionAcquired</a></span>&#8203;(int&nbsp;windowIndex,
                    <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
                    int&nbsp;state)</code></th>
<td class="colLast">
<div class="block">Called each time a drm session is acquired.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">onDrmSessionManagerError</a></span>&#8203;(int&nbsp;windowIndex,
                        <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
                        <a href="https://developer.android.com/reference/java/lang/Exception.html" title="class or interface in java.lang" class="externalLink" target="_top">Exception</a>&nbsp;error)</code></th>
<td class="colLast">
<div class="block">Called when a drm error occurs.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionReleased</a></span>&#8203;(int&nbsp;windowIndex,
                    <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
<td class="colLast">
<div class="block">Called each time a drm session is released.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmSessionAcquired</h4>
<pre class="methodSignature"><a href="https://developer.android.com/reference/java/lang/Deprecated.html" title="class or interface in java.lang" class="externalLink" target="_top">@Deprecated</a>
default&nbsp;void&nbsp;onDrmSessionAcquired&#8203;(int&nbsp;windowIndex,
                                  @Nullable
                                  <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span>
<div class="deprecationComment">Implement <a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)"><code>onDrmSessionAcquired(int, MediaPeriodId, int)</code></a> instead.</div>
</div>
</li>
</ul>
<a id="onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmSessionAcquired</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmSessionAcquired&#8203;(int&nbsp;windowIndex,
                                  @Nullable
                                  <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
                                  <a href="DrmSession.State.html" title="annotation in com.google.android.exoplayer2.drm">@State</a>
                                  int&nbsp;state)</pre>
<div class="block">Called each time a drm session is acquired.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
<dd><code>state</code> - The <a href="DrmSession.State.html" title="annotation in com.google.android.exoplayer2.drm"><code>DrmSession.State</code></a> of the session when the acquisition completed.</dd>
</dl>
</li>
</ul>
<a id="onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmKeysLoaded</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmKeysLoaded&#8203;(int&nbsp;windowIndex,
                             @Nullable
                             <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
<div class="block">Called each time keys are loaded.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
</dl>
</li>
</ul>
<a id="onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmSessionManagerError</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmSessionManagerError&#8203;(int&nbsp;windowIndex,
                                      @Nullable
                                      <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
                                      <a href="https://developer.android.com/reference/java/lang/Exception.html" title="class or interface in java.lang" class="externalLink" target="_top">Exception</a>&nbsp;error)</pre>
<div class="block">Called when a drm error occurs.

 <p>This method being called does not indicate that playback has failed, or that it will fail.
 The player may be able to recover from the error and continue. Hence applications should
 <em>not</em> implement this method to display a user visible error or initiate an application
 level retry (<a href="../Player.Listener.html#onPlayerError(com.google.android.exoplayer2.ExoPlaybackException)"><code>Player.Listener.onPlayerError(com.google.android.exoplayer2.ExoPlaybackException)</code></a> is the appropriate place to implement such
 behavior). This method is called to provide the application with an opportunity to log the
 error if it wishes to do so.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
<dd><code>error</code> - The corresponding exception.</dd>
</dl>
</li>
</ul>
<a id="onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmKeysRestored</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmKeysRestored&#8203;(int&nbsp;windowIndex,
                               @Nullable
                               <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
<div class="block">Called each time offline keys are restored.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
</dl>
</li>
</ul>
<a id="onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDrmKeysRemoved</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmKeysRemoved&#8203;(int&nbsp;windowIndex,
                              @Nullable
                              <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
<div class="block">Called each time offline keys are removed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
</dl>
</li>
</ul>
<a id="onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onDrmSessionReleased</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;onDrmSessionReleased&#8203;(int&nbsp;windowIndex,
                                  @Nullable
                                  <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
<div class="block">Called each time a drm session is released.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
<dd><code>mediaPeriodId</code> - The <a href="../source/MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
